package Modelo.Entidades;

import java.util.Date;
import java.util.Date;

import LogicaDeNegocio.AdministracionFechas;

public class Licencia {

	private boolean donanteOrganos;
	private Date fechaInicio;
	private Date fechaVencimiento;
	private int idLicencia;
	private Titular titular;
	private Usuario usuario;
	private TipoEmision tipoEmision;
	private Estado estado;
	private ClaseLicencia claseLicencia;
	private String observaciones;

	public Licencia(){
		this.idLicencia = -1;
		this.titular = new Titular();
		this.fechaInicio = new Date();
		this.fechaVencimiento = new Date();
		this.usuario = new Usuario();
		this.estado = new Estado();
		this.claseLicencia = new ClaseLicencia();
		donanteOrganos = false;
		this.observaciones = "";
		
		this.tipoEmision = new TipoEmision("ORIGINAL", 1);
	}

	public Licencia(Titular titular, Date fechaInicio, Date fechaVencimiento, Usuario usuario, Estado estado, ClaseLicencia claseLicencia,
			boolean donante, String observaciones) {
		this.titular = titular;
		this.fechaInicio = fechaInicio;
		this.fechaVencimiento = fechaVencimiento;
		this.usuario = usuario;
		this.estado = estado;
		this.claseLicencia = claseLicencia;
		donanteOrganos = donante;
		this.observaciones = observaciones.toUpperCase();
		
		this.tipoEmision = new TipoEmision("ORIGINAL", 1);
	}
	
	public boolean isDonanteOrganos() {
		return donanteOrganos;
	}

	public void setDonanteOrganos(boolean donanteOrganos) {
		this.donanteOrganos = donanteOrganos;
	}

	public Date getFechaInicio() {
		return fechaInicio;
	}

	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	public Date getFechaVencimiento() {
		return fechaVencimiento;
	}

	public void setFechaVencimiento(Date fechaVencimiento) {
		this.fechaVencimiento = fechaVencimiento;
	}

	public int getIdLicencia() {
		return idLicencia;
	}

	public void setIdLicencia(int idLicencia) {
		this.idLicencia = idLicencia;
	}

	public Titular getTitular() {
		return titular;
	}

	public void setTitular(Titular titular) {
		this.titular = titular;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public TipoEmision getTipoEmision() {
		return tipoEmision;
	}

	public void setTipoEmision(TipoEmision tipoEmision) {
		this.tipoEmision = tipoEmision;
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	public ClaseLicencia getClaseLicencia() {
		return claseLicencia;
	}

	@Override
	public String toString() {
		return claseLicencia.toString();
	}
	
	public String toStringAll(){
		AdministracionFechas admFechas = AdministracionFechas.getInstance();
		return "Licencia [donante de organos = " + donanteOrganos + ", \nfecha de Emision = "
				+ admFechas.getFechaToString(fechaInicio) + ", fecha de Vencimiento = " + admFechas.getFechaToString(fechaVencimiento)
				+ ", \nid de Licencia = " + idLicencia + ", \n" + titular.toStringAll()
				+ ", \nusuario = " + usuario.toStringAll() + ", \ntipo de Emision = " + tipoEmision.toString()
				+ ", \nestado = " + estado.toString() + ", \nclase de Licencia = " + claseLicencia.toString()
				+ ", \nCosto: " + claseLicencia.getCostoVigencia().getCosto() 
				+ ", \nobservaciones = " + observaciones + " ]\n\n";
	}

	public void setClaseLicencia(ClaseLicencia claseLicencia) {
		this.claseLicencia = claseLicencia;
	}

	public String getObservaciones() {
		return observaciones.toUpperCase();
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones.toUpperCase();
	}

	public void finalize() throws Throwable {

	}
}//end Licencia